转:Unix之父、C语言的发明人:Dennis M. Ritchie、Ken Thompson

Unix之父、C语言的发明人, Kenneth Lane Thompson,1943年2月4日-,小名为Ken Thompson,为美国计算机科学学者,与Dennis M. Ritchie同为1983年图灵奖得主。

他与Dennis M. Ritchie设计了C语言,他也是编程语言Go的共同作者。

1943年Thompson出生于美国新奥尔良。1960年就读加州大学博克莱分校主修电气工程,取得了电子工程硕士的学位。1966年加入了贝尔实验室。Thompson参与了贝尔实验室与麻省理工学院以及通用电气公司联合开发的一套多使用者分时作业系统,名叫Multics,同时他自己又写的一个“star travel”游戏可执行于Multics之上。贝尔实验室后来撤出Multics计划。Thompson只好找到一台老式PDP-7机器,重写了他的“star travel”游戏。

在开发Multics的期间,Thompson创造出了名为Bon的程式语言。Thompson花了一个月的时间开发了全新的操作系统,UNiplexed Information and Computing System(UNICS),可执行于PDP-7机器之上,后来改称为UNIX。第一版的Unix就是基于B语言来开发的。Bon语言在进行系统编程时不够强大,所以Thompson和Ritchie对其进行了改造,并与1971年共同发明了C语言。1973年Thompson和Ritchie用C语言重写了UNIX。安装于PDP-11的机器之上。

1983年,美国计算机协会将杜林奖授予Thompson与丹尼斯。

2000年12月时,Thompson退休,离开贝尔实验室,成为了一名飞行员。

软件业的瑞士军刀

2001年10月25日,微软举行隆重的Windows XP发布仪式,启动了10亿美元的宣传大攻势,准备继续垄断操作系统市场。自Windows发布以来,微软在台式机和笔记本电脑市场上所向披靡,但是迄今为止,微软还难以撼动高端市场的操作系统,因为这个市场上有着一个强大的守卫者—Unix。它依然是工作站、服务器、特别是大中型计算机最流行的操作系统,对企业级应用以及工程、学术界产生了巨大的影响。如果现代办公软件的世界属于Windows,那么网络的天下依然属于Unix。

然而不可思议的是,当初这个操作系统的诞生,并不是为了把它推向市场,甚至不是为了让更多人使用,而仅仅是作者为了便于自己使用,而且初衷是为了自己更方便地玩游戏。连Unix这个别扭的名字,也是对早期一个名为Multics操作系统开玩笑的称呼。在后来的获奖答谢中,作者之一的Dennis M. Ritchie坦然说:“我们的目的是为自己建立一个良好的计算机工作环境,当然也希望大家都能喜欢它”。

然而,在这不经意间,奇迹诞生了,再一次验证了IT业的创新往往是兴趣,而不是大把大把的金钱使然。经过10年的内部使用,于70年代中期开始。Unix第一次公诸于世,就慢慢走向成功,震动整个计算机业。1969年开始工作时,Ritchie和Thompson根本没有想过要掀起业界的狂热,在1974年以前,他们甚至没有发表过任何关于项目的消息。而当Unix露面时,他们还惊奇于会引起如此大的兴趣。他们并没有积极推销,大学、研究机构可以免费使用,而且还提供源代码。

两人所在的单位——大名鼎鼎的贝尔公司也没有鼓励开发Unix,但当它成为畅销品时,贝尔才认识到它是一件珍品,并很高兴拥有Unix的部分商标,针对企业收取4.3亿美元的特许使用权。一位贝尔高级主管曾说,Unix是继晶体管以后的第二个最重要发明。丹尼斯面对这种税法,只是谦虚地说:“就其受公众瞩目地程度而言,Unix确实是一项重要的开发”。

据10年统计,1985年美国大约有27.7万台计算机使用Unix,1990年增加到210万台,目前已超过500万,用户数达到3000万。1987年初,适用于Unix软件包达到了2000个,而两年前还只有300个。到80年代中期,Unix就自然成为计算机业的主要标准,尤其在科学和工程应用方向。1984年9月《财富》杂志称,世界上有750所大学中80%的计算机科学家是Unix客户。因此几乎任何计算机专业毕业的,都接触过Unix。1999年4月27日,两人在白宫从美国总统克林顿手中接过沉甸甸的全美技术勋章,这是对他们成就的最高评价。

UNIX之所以获得如此巨大的成功,主要是它采用了一系列先进的技术和措施,解决了一系列软件工程的问题,使系统具有功能简单实用,操作使用方便,结构灵活多样的特点。它是有史以来使用最广的操作系统之一,也是关键应用中的首选操作系统。UNIX成为后来的操作系统的楷模,也是大学操作系统课程的“示范标本”。

由于Unix诸多优点,人们将它称为是软件的瑞士军刀。

奇迹并不是天才的专利

1941年9月9日,丹尼斯·Ritchie出生于纽约州的勃浪克斯山庄(Bronxville),但在9岁时移居新泽西州的塞米特。Ritchie的父亲是一个电气工程师,在贝尔实验室的交换系统工程实验室当主任,因此,Ritchie一家可谓“贝尔世家”。Ritchie中学毕业后进哈佛大学学物理,并于1963年获得学士学位。其间,哈佛大学有了一台UNIVAC I,并给学生开设有关计算机系统的课程,Ritchie听了以后产生了很大的兴趣。毕业以后他在应用数学系攻读博士学位,完成了一个有关递归函数论方面的课题,写出了论文,但不知什么原因没有答辩,没有取得博士学位,他就离开了哈佛,他说:“我厌倦了,怎么也不能深入。这是一种计算数学,是机器都可以做的理论。”于1967年进入贝尔实验室,与比他早一年到贝尔的汤姆泼逊会合,从此开始了他们长达数十年的合作。

在Ritchie读大学时,他就对计算机感兴趣,但学院的学习使他更注重理论而不是实际应用。在读研究生时,Ritchie接触到了Multics,并用业余时间为MIT计算时间共享项目MAC工作。1968年,Ritchie到贝尔实验室工作,他和Thompson都在计算机科学研究部门,他们的任务宏伟而不明确:调查感兴趣的计算机科学问题。

1943年2月4日,Thompson生于新奥尔良,父亲是一个海军军官,经常外出远航。他两岁时就已经在圣迭尔、西雅图、旧金山和德克萨斯的金斯威尔生活过。自幼的爱好有两个:一个是下棋,一个是组装晶体管收音机。年轻时,他经常光顾金斯威尔无线电商店,学会了许多电子和无线电知识。金斯威尔是石油工业中心的一个小镇,没有电话,只有为开往油田钻塔的小车使用的无线电短波。Thompson常常加入去油井参观的无线电商店员工队伍,并爬到钻塔上取需要维修的无线电装置。他从小就爱好象棋,因此在70年代,他编了一套对弈计算机软件,并3次成为美国冠军。父亲为了发展孩子的能力,很舍得为他买晶体管让他摆弄。当时晶体管问世不久,价格不菲,每只晶体管售价10美元。

1960年,Thompson进入加州大学伯克利分校学习,专业是电气工程。1962年,他在计算机中心找了份工作,编写程序和帮助在编程中遇到困难的人。因此虽然他学的是电气,主要是硬件课程,但他对软件也相当熟悉,而且更加偏爱。求学期间,他还参加了通用动力学公司(GDC)在伯克利实行的半工半读计划,既增长了知识,又积累了不少实践经验。

1965年他从伯克利毕业,一年后又获得伯克利的电子工程硕士学位。但后来他并没有用到它。“我曾是一个电子迷,喜欢自己动手做东西。但自从有了计算机以后,我发现他们很相似。计算让人着迷,电子也让人着迷,只是不那么干净,它脏多了,常常有东西被烧坏。”

60年代还是批处理的年代,计算机程序员只能在又慢、又笨,而且效率极低的大型机上工作,急需新系统。1962年,ARPA资助300万美元,其首要目标是开发一个完善的分时系统。60年代末,贝尔实验室与MIT、通用电气GE(那时通用电气也是大型机制造商之一)联合,开发一个多用户分时系统,起名Multiplexed Information and Computer System(Multics)(多种信息和计算服务)。Multics直到1969年才准备好,但是这个系统不但开发成本过高,而且庞大而缓慢,是一个过度开发的怪兽,它在商业上从未取得成功。贝尔决定撤出项目,并招回人马。留下MIT和GE继续开发,后来霍尼威尔购并了GE的计算机部门,还继续销售Multics。

玩游戏玩出新发明

不过,Multics在许多方面都具有重要意义。Ken Thompson和Dennis M. Ritchie在开发Unix 时就使用了来自Multics的许多思想。但也许最重要的是“分时”将用户带入了计算机设计世界。Corbato说:“分时导致了一个工程规则:用户的交互式需求和设备效率一样重要。”

“就实验室来说,Multics的确是一个代价高昂的陷阱。因为它不仅仅是一个研究项目,而是要满足真正的计算需要。”但对于实验室的计算机科学家Ken Thompson来说,它却是个不幸,因为从此他再也没有机器可以玩他的视频游戏了。他自己编写的“太空旅行”仿真游戏,就是运行在Multics的终端上。

Multics比用户需要的更复杂,但用惯了一旦失去,还是令人痛苦的。Ritchie说:“我们已经习惯了人机交互的环境,你可以在机器上输入数据并得到回答,这种情况让人满足。而不同于过去把卡片装入装备,等一个小时后再回来取。”Thompson玩游戏心切,决定自己开发一个开放式的操作系统。他向老板提出一些建议,但由于有了Multics的前车之鉴,老板自然不会同意。Thompson决定自力更生,他四处寻找,找到了一台废弃的老式电脑——DEC—PDP-7。令人兴奋的是,它带有一套特别的图形终端系统,有很快的硬盘和四个终端,一个视频显示器,可以大大强化“太空旅行”的显示效果。

于是,Thompson在PDP-7上重写了“太空旅行”,在这过程中他萌生新的念头,准备开发一个全新的文件系统。利用PDP-7的汇编语言,Thompson只用一个月就编写完毕操作系统的内核,他制定了一个时间表,每周开发一个内核、文件系统、编辑器和编译程序。这个阶段结束时,他创建了一个差不多可以运行的系统,组成了最原始的操作系统。这是一个为了单一目的由一个人设计的系统,仅仅是为了使自己软件开发更加简单。因此,参考Multics的Multi(多)之义,冠以“Uni(单)前缀。也有另外一种说法,他同事Brian Kernighan非常不喜欢这个系统,嘲笑Thompson说:“你写的系统好真差劲,乾脆叫Unics算了。”(Unics发音与太监的英文Eunuchs一样),就这样,Thompson的系统就叫了这个名字,只不过稍微改动了一下,叫Unix。

Unix的出现引起了实验室另一位系统软件设计员的注意,这就是Dennis M. Ritchie,两人开始并肩作战。

“我可以为运行这个文件系统的操作编写代码”,Ritchie回忆道,“在这个过程,你显然需要不同的命令和软件来测试。于是,我们写了一个子命令程序来处理键盘的输入,还写了一个拷贝命令,一个删除命令。这样能够做任何你想要做的文件编辑工作。操作系统的本质就是:能读取命令并能存储数据。”

回顾那段过程,Ritchie说它“很可怕,但是它能用。”因为在机器上什么软件也没有,完全是从零开始。实际建立Unix的是Thompson,Ritchie的主要贡献是指出计算机设备可以像同样名字的文件一样出现在文件系统中,这是一个创新。两年过去了,PDP-7这台老牛破车需要淘汰。因为你在一台几近淘汰的破旧机器上开发,战果是不能为其他人所用的。这时他们将目光投向了大型机PDP-II,这是DEC最有影响的机器之一。但是要上级掏钱买一台新机器来开发,显然是异想天开。
  
这时,机会来了。实验室的专利部门需要一套文字处理系统,Thompson和同事赶紧写了一个名为“办公任务编辑系统”的项目建议。一开始依然阻力重重,但到了1970年5月,建议通过了。夏天,PDP-II到货了,这台崭新的机器几乎没被使用过,因为它的磁盘12月才到,而且没有软件。这成了Unix的真正起点。到1971年底,Unix基本完成开发,可以让第一个真正的用户进行测试了。三个打字员装入专利应用程序,实验十分成功。专利部门决定采用Unix而放弃DEC原有操作系统。

可以说,Unix在贝尔能够受到欢迎,主要受惠于PDP-II。因为当然大部分实验记录和问题报告都由PDP-II完成。“它有许多好的外设,而且性能可靠,体积又小,又便宜。而DEC的软件不方便,大家四处寻找,听说Unix后,自然就采用它。”

酒香不怕巷子深

急功近利的大多数商业软件,都在没有充分完善前就匆匆推向市场。而Unix很幸运。它发展得很慢,每一步都很扎实。贝尔内部专门成立了一个开发小组来支持它,Unix是少数几个并不急于推向市场的产品之一,它的酝酿阶段长得不平常,持续了从1969年到1979年的整整10年,但恰如愈陈愈香的美酒一样,当Unix最终作为产品面对用户时,它已经被充分应用过了,也被充分完善了。贝尔实验室有大量的使用者,并在大部分重要的部门历经考验。

1973年前,外面几乎无人知道,直到1973年10月,才在IBM举办的操作系统原理专题研讨会上提及。他们向与会的200来人展示了Unix当时的版本,他们在会上宣读的论文是最成功的论文之一。与会者几乎立即过来索取这种新型操作系统软件。1974年,他们在《Communications of the ACM》期刊上发表了一篇论文,因此人们对Unix产生了更大的兴趣。当年就有40个机构要求购买Unix操作系统软件。

为了实现Unix的可移植性,他们着手解决Unix的内核,将其依赖PDP的部分重新改写。这部分只占系统的10%,而其余的90%,包括文件系统、内存定位、磁盘驱动等均可以独立。Unix的原始程序用汇编写成,还不具备可移植性。Unix发展进程中的转折点是在1973年,当时Ritchie开发出一种称为C的语言。C的设计原则就是好用,非常自由、弹性很大。就这样Unix和C完美地结合成为一个统一体。用C重写后,Unix就真正可移植了,这时已是1977年。因为C是编写Unix的语言,因此后来也成了最受欢迎的系统程序语言之一。

Unix的贡献还不止于此,当时的传统是,一个操作系统必须完全用汇编语言写成,让计算机发挥最高的效能。Thompson与Ritchie,是头几位领悟硬件与编译器的技术的人,计算机已经进步到操作系统可以完全用高级语言来写,仍保有不错的效能。Unix和C相得益彰,不可思议地变成一个重量级的系统组合,开发工具和操作系统的完美结合滋生了黑客文化深邃的根源。五年后,Unix已经成功地移植到数种机器上。它意味著,如果Unix可以在各种平台上运行的话,Unix的应用软件就能移植到各种机器上,再也用不着为特定的机器写软件了。追随Unix最大的好处是,当一种新的计算机出现,程序员用不着重新发明轮子和火了。这样,Unix与70年代风起云涌的各种PC操作系统有了根本区别,包括当时最著名的CP/M,也是针对特殊的处理芯片——Intel 8080,而Unix可以运行在各种微处理器上,8080、Z80、8086、8088、Z8000、68000、16032、LSI-11、PDP-11、VAX、HP-9000、IBM-370、适用的机器从5000美元到数十万美元都有。

由于看好UNIX的应用和前景,各大公司纷纷推出自己的UNIX版本,如IBM的AIX,SUN的Solaris,HP的HP-UX,SCO 的UNIXWare和Open Server,DEC(已被Compaq收购)的digtal UNIX,以及加州大学伯克利分校的UNIX BSD。这些UNIX各有特色,形成百花齐放的局面。如今,如日中天的Linux实际上也是UNIX的一个变种。

在计算机发展史上,没有哪个程序语言像C那样得到如此广泛的流行;也没有哪个操作系统像UNIX那样获得如此普遍青睐和厚爱。UNIX的开发在前,C是为了使UNIX具有可移植性而后来研制的。作为亲密的合作者,Thompson在UNIX的开发中起了主导的作用,而Ritchie则在C的设计中起的作用更大一些。他们两人共同获得了1983年度的图灵奖。

永远的黑客文化

除了跨平台的优点外,Unix与C还有许多显著的优势。例如它们的的设计哲学是Keep It Simple, Stupid’programmer(简单和傻瓜化),可以轻易掌握整个C的逻辑结构。C与Unix的应用范围之广,出乎原设计者之意料,很多领域的研究要用到电脑时,它们都是最佳拍档。Unix采用了200多条程序命令,其内核很小,仅8000行代码,其中只有800行用了汇编语言。还有一大优点就是经济,一条用100行到1000行代码的程序,用Unix不超过10条命令就可解决。尽管缺乏一个正式支援的机构,它们仍在AT&T内部中疯狂的散播。到了1980年,已蔓延到大学与研究机构,还有数以千计的黑客想把Unix装在家里的机器上。

Unix有一套专有的网络软件—UUCP:一种低速、不稳但成本很低廉的网络。两台Unix机器用条电话线连起来,就可以互传电子邮件。UUCP是内建在Unix系统中的,不用另外安装。于是Unix站台连成了专属的一套网络,形成了Unix黑客文化。在1980第一个USENET站台成立之后,组成了一个特大号的分散式布告栏系统,吸引而来的人数居然很快地超过了ARPANET。但是PDP-10的黑客们并不接受Unix,比起他们那复杂华丽,令人爱不释手的LISP与ITS,C与Unix简直原始的令人好笑。“一群穿兽皮拿石斧的野蛮人”他们咕哝著。

在这时,又有另一股新潮流风行起来。1975年第一台PC问世了;苹果电脑在1977年出现。微电脑的潜力,立刻吸引了另一批年轻的黑客。他们最爱的计算机语言是BASIC,由于它过于简陋,PDP-10的死忠派与Unix迷们根本不屑用它,更看不起使用它的人。

1980年同时有三个黑客文化在发展,尽管彼此偶有接触与交流,但还是各玩各的。ARPANET/PDP-10文化,玩的是LISP、MACRO、TOPS-10与ITS。Unix与C的拥护者用电话线把他们的PDP-11与VAX机器串起来玩。还有另一群散乱无秩序的微电脑迷,致力于将电脑科技平民化。

谁也没有想到,30年后Unix操作系统仍会被人们广泛使用。1983年,当计算机协会将年度奖颁给两位时,如此评价道:“Unix系统的成功源于几个关键想法的最佳选择,和对这些构想的完美实施。Unix系统的模型经过一代软件设计师的努力,带来了全新的编程思维。Unix天才之处在于它的结构,它使程序员可以在其它人的工作基础上工作。”通过C语言和Unix,可以使软件低成本,大规模地应用。

贝尔实验室的最后版本为32/V,以后来自AT&T的所有Unix版本,从最初的System III到后来的System V,都由注重稳定性的商业版本的不同组织管理。伴随着Unix的商业化,贝尔实验室的研究员开始感到作为兴起的Unix研究的源头有些力不从心了。当研究社团继续修改Unix系统时,他们发现需要有一个组织能开发研究版。由于伯克利对Unix开发的介入很早,且具有发布基于Unix实用程序的历史,伯克利很快步入并取代了先前贝尔实验室的角色。

事实上,互联网上运行的大多数操作系统就是Unix。1993年,AT&T将Unix卖给Novell。1995年,Novell又将它卖给圣克鲁斯丁。如今,象SCO、IBM、Digital、HP和Sun等都有不同的版本,造成了市场的混乱,成为微软Windows NT攻击的致命弱点。UNIX的领地正被Windows NT蚕食,不是因为NT的技术更先进,而是因为竞争。当几个UNIX兄弟为竞争而标新立异时,却被版本单一的NT抢占了市场。人们需要竞争带来的低价和技术进步,而不是互不通用。苹果比之于PC兼容机的失败是一个绝好的例子。

因此可以毫不夸张地说,Unix的成功与其内在的黑客理想密不可分。后来,Linux的崛起延续了这种精神。在商业化如火如荼的今天,面临灭绝的黑客精神将使IT业失去许多宝贵的创新动力。

共同走进历史的殿坛

Thompson和Ritchie在成名以后,都没有走办公司、挣大钱的路,他们仍在贝尔做他们喜爱做的事,而且还一直保持着他们历来的生活习惯和作风,常常工作到深夜,在贝尔是出名的“夜猫子”。Ritchie在接受记者采访时,就自称自己是 “definitely a night person”。Ritchie1983年接受图灵奖时已经42岁,但仍然单身。

Thompson围绕UNIX的开发工作于1978年结束。之后,他从事过的项目有“Plan 9”,这是另一个操作系统。此外,鉴于他自幼爱好下棋,他还建造过一台名为“Belle”的下棋计算机,还与康顿(Joseph Condon)合作,在PDP-11/23, PDP-11/10上编制了下棋程序,这个程序从1979年到1983年在连续几届计算机世界比赛中都独占鳌头,成为“四连冠”,同时也成为被美国围棋联盟VSCF授予“大师”称号的第一个下棋程序。这个程序每秒可考察15万个棋步,与现今IBM的“深兰”当然无法相比,但在当时却是一个了不起的成就。

UNIX的开发是以汤姆泼逊为主的,但为什么文献资料中一提到UNIX,都一致地说是Ritchie和汤姆泼逊共同开发的,而且在“排名”上往往是Ritchie在前,汤姆泼逊在后。包括1973年首次向社会推介UNIX的论文的署名,Ritchie也是第一作者,汤姆泼逊则为第二作者。这里有两个很重要的因素。首先,UNIX的成功应归功于它的创新。UNIX吸取与借鉴了Multics的经验,但是UNIX在继承中又有创新,它采用了一些新方法,比Multics更高明一些。正是在这些方面,Ritchie发挥了很重要的作用,使UNIX独具特色。其次,UNIX成功的一个重要因素是它的可移植性。正是Ritchie竭尽全力开发了C语言,并把UNIX用C重写了一遍,这才使它具有了这一特性。

1983年10月,ACM在年会上向Thompson和Ritchie颁奖。当年ACM还决定新设立一个奖项叫“软件系统奖”(Software System Award),奖励优秀的软件系统及其开发者。而首届软件系统奖评选结果中奖的还是UNIX。这样,这届年会上Thompson和Ritchie成了最受关注的大红人,他们同时接受了“图灵”和“软件系统”两个大奖,这在ACM历年的颁奖仪式上也是从来没有过的。

Ritchie发表的图灵奖演说题为“对软件研究的反思”,Thompson的演说题为“对深信不疑的信任的反思”。此外,两人还从两个著名的杂志那里获得奖励和荣誉。一是《电子学》(Electronics)周刊,它从1974年起设立“成就奖”,奖励在电子线路、工艺、仪器设备等方面有重大发明创造的科学家,曾经获得该项奖励的人中包括著名的提出“摩尔定理”的英特尔总裁摩尔,MOS工艺的发明者Ritchie曼,发明软盘的舒加(A.F.Shugart)等。但由于UNIX和C的巨大成功和影响,使1982年的这个奖破例授予了软件开发者汤姆泼逊和Ritchie。二是读者面很广的《Datamation》月刊,它于1987年创刊30周年时建立了一个“计算机名人堂”,首批30位名人中包括图灵、冯•诺伊曼及多位图灵奖得主,如克努特(D.Knuth)、巴科斯(J.Backus)、麦卡锡(J.McCarthy)等。第二年首次增补名人,就选中了Thompson和Ritchie。

Ritchie从来没有间断过在计算机及其操作系统方面的工作。也因此,他所领导的研究小组开发出了Plan 9 和Inferno。目前,他担任朗讯科技公司(原属于AT&T)贝尔实验室的计算科学研究中心系统软件研究部的主任一职。该中心位于美国新泽西州的Murray Hill。他是美国国家工程学院院士,贝尔实验室杰出研究人员。他获得过许多项荣誉,包括计算机协会图灵奖,IEEE奖章、NEC C&C基金会奖以及美国国家技术奖。

纵论天下

面对记者,最近Ritchie畅所欲言,从谈话中我们可以很好地了解这位名人的最新心里历程。

问:如同许多孩子对超人崇拜一样,全世界也有很多的 C 程序员和 UNIX 迷把你当成了他们的偶像。你能谈谈这种被众多人崇拜的感觉吗?根本无法想象如果这个时代没有了 UNIX 和 C 会变成怎样。当你在创造 C 和 UNIX 的时候,你想过它们将会成为计算机科学的“未来”吗?

Dennis:这两个问题非常相似也经常被问到。显然,我和我的合作者所取得的那些奖励都是很令人振奋的。我们也为能创造一些有真正价值的东西而感到高兴。但是,我们不认为这就是计算机科学的“未来”甚至根本就无法预见到这个学科的最终发展结果会是什么样子。本着“物有所用”的精神我们开始致力于这项研究开发工作,其间还做了一些帮助其他人加入进来的工作。有一点值得我们重视:尽管 Unix 和 C 或者 C++ 的程序是非常有效的,但不可否认的是计算机科学技术领域及其实际产品开发潜力仍然很巨大。这一方面反映在高校的编程语言研究方向上,另一方面也反映在商业软件领域。

问:UNIX 是一个有着悠久历史的操作系统。从它多年前诞生的那一刻起至今,其在网络、硬件、服务及应用方面的兼容性和需求都发生了非常巨大的进展。面对现在和不远的将来用户的需求,你认为 UNIX 目前存在那些限制或者说是障碍?

Dennis:从基本的系统 API(“系统调用”)上来看,我认为没有什么基本原理或者技术上的限制。当然,只要 Unix 之间以及现在出现的各个“免费”Unix 供应商(包括Linux 和 BSD 在内)之间的竞争存在,大量的商业/政治的争论就会出现。

问:回顾一下你在贝尔实验室的工作,你看起来每时每刻都在做着自己真正喜欢的项目。我可不可以假设你也是出于同样的喜欢 Inferno 才致力于它的开发呢?我断言:你真正热爱 UNIX 和 C 的设计工作,是不是这样呢?很多公司做出决定开始开发 Linux 下的软件(包括贝尔实验室的 Inferno 也有了与 Linux 的接口),你是如何看待 Linux 的全部动力及上述现象的呢?

Dennis:我确实喜欢我在贝尔实验室的工作(而且还将继续下去)。我认为 Linux 现象是非常让人高兴的事情。因为它强烈的震撼了 Unix 提供的基础。尽管还有象 BSD 这样的不但品种多而且还得到了工作站及大型机制造商支持的 Unix 存在,而 Linux 看起来才是最健康的 Unix 派生系统之一。当然,还有一种现象不得不引起我的关注。那就是这个源于 Unix 的“免费资源”世界也正在陷入分裂和竞争之中。而这中分裂和竞争的现象是一直存在于商界的。

问:还有一个关于 Linux 的大问题:你用过 Linux吗?如果用过的话,你对它的看法如何?

Dennis:事实上我还没有真正的使用过它。如果把我日常的计算都搬到它上面来,这在我看来说恐怕是不能接受的。我本人的计算世界是个由 Plan 9、Windows 及 Inferno 构成的奇怪组合。我非常欣赏 Linux 的生气和活力。时常有人问我一个非常相似的问题,仿佛是为了等着我对 Linux 与 Unix 之间由商业公司挑起的版权及商标争端表示我的愤怒或嫉妒。但是我一点也没有这种感觉,相反我认为二者都是肯和我还有其他人多年前那些思想的延续。

Ken Thompson简介

Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一,操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。Ken爷爷还有段佳话:装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译器。

Dennis M. Ritchie简介

许多重要人物之所以成名,或者是因为其改变了历史或者是因为其创造了历史,Dennis Ritchie 属于后者。当我们中的大多数人还在姗姗学步的时候,他就开发了“C”语言——这种最有效、最通用的编程语言。当然,这里不必再次强调这项成果给人类的带来巨大贡献。

然而,他的成就不仅仅是这些。Dennis Ritchie还和Ken Thompson一起开发了Unix操作系统,就是 OS。可以说:是他创造了UNIX。

他从来没有间断过在计算机及其操作系统方面的工作。也因此,他所领导的研究小组开发出了 Plan 9 和 Inferno。

他的工作得到了很多计算机组织的公认和表奖,如:美国计算机协会(ACM)授予的系统及语言杰出论文奖(1974);电气和电子工程师协会(IEEE)的 Emmanuel Piore 奖(1982);贝尔实验室特别人员奖(1983);美国计算机协会(ACM)的图灵奖(1983); NEC公司的 C&C 基金奖(1989);电气和电子工程师协会(IEEE)的优秀奖章(Hamming Medal)(1990), 等等。

目前,Dennis M. Ritchie 正担任贝尔实验室/朗讯科技公司(原AT&T实验室)下属的计算科学研究中心系统软件研究部的主任一职。该中心位于美国新泽西州的 Murray Hill。

Unix时代的开创者Ken Thompson(1943~)

自图灵奖诞生以来,其获得者一直都是计算机领域的科学家与学者,而在所有这些界的图灵奖中只有唯一的一界有个例外,那就是Ken Thompson与Dennis M. Ritchie,他们都是计算机软件工程师。

Ken Thompson,1943年出生于美国新奥尔良。1960年,Ken进入加州大学伯克利分校主修电气工程。1965年从伯克利毕业后,又花了一年的时间在该校取得了电子工程硕士的学位。不知道是时代造就英雄,还是英雄顺应时代而生,在Ken读书期间,正好赶上了计算机时代蓬勃发展的起步阶段,自小喜欢电气的Ken接触到计算机后,立即完全沉迷了进去,从1962年的开始,他就在学校的计算机中心找到份工作,专门负责程序的编写。这也为其后他一手开创的Unix时代奠定了良好基础。

1966年离开校园的Ken加入了贝尔实验室。那时的计算机系统还是批处理的天下,程序员只能在又慢又笨重大型机上工作,一般来讲是先将程序卡片装入设备,然后再等1个小时再过来取回运算的结果,其效率之低可想而知。应市场的需要,当时贝尔实验室与麻省理工学院以及通用电气公司联合开发了一个多用户分时操作系统,取名为Multics(多路信息计算系统),Ken当时就是这个系统的开发人员之一,在开发Multics的期间,Ken创造出了名为Bon的编程语言。可惜因为这个系统不但开发周期长,成本高,而且庞大而缓慢,市场前景完全不被看好,最后贝尔实验室从这个项目中撤了出来。这对于Ken而言,简直是个巨大的不幸,因为他自己用写的一个“star travel”游戏就是完全基于Multics的,退出Multics项目意味着Ken将没有机器可以再玩这个游戏了。

面对此情此景,Ken作为一个创造者的本性立即体现了出来,于是他决定自己写一个操作系统来满足他玩游戏的需要,说干就干,Ken找到了一台废弃已久的老式PDP-7,并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利用PDP-7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个内核,一个文件系统,一个编辑器和一个编译程序的完成。做完这个系统后,Ken将其命名为UNiplexed Information and Computing System,缩写为 UNICS,后来做了一下改动,称为UNIX,在开发第一版Unix的过程中,Ken还开发出一种新的语言,即C语言的前身——B语言,这种语言简洁明了,接近于硬件语言,第一版的Unix就是基于B语言来开发的。

Unix的出现开始虽然并不为大家所看好,但是却引起了贝尔实验室另一位同事的注意,这就是Dennis M. Ritchie,于是Dennis主动加入了进来共同完善这个系统。至此一场轰轰烈烈的Unix的传奇时代才真正的拉开了序幕。1972年,他们联手将Unix移植到当时最先进的大型机PDP-2上,由于Unix是如此的简洁、稳定与高效,以至于当时大家都放弃了PDP-2上自带的DEC操作系统,而完全改用Unix,这时的Unix已经开始走向成熟了。在1973年之前Unix还不太为外界所知,到同年10月,Unix在IBM举办的操作系统原理专题研讨会上被提及,当Ken和Dennis在会上宣读论文并展示Unix后,整个会场轰动了,大家都立即涌上来索取这种新型的操作系统的程序。随着Unix的需求量的日益增加,Ken与Dennis决定将Unix进一步改写,以便可以移植到各种不同的硬件系统,由于Unix的原码中不少是用汇编完成,不具备良好的移植性,正好Dennis在1973年在B语言的基础上开发出了C语言,C语言灵活,高效性,与硬件无关,并且不失其简洁性,正是Unix移植所需要的法宝,于是旧版的Unix与C语言完美结合在一起产生了新的可移植的Unix系统。随着Unix的广泛使用,C语言也成为了当时最受欢迎的编程语言一直到延续至令。

说到Unix与C语言,还有一段小故事,当时安装了Unix的PDP-11被放在贝尔实验室供大家使用,有一天大家伙发现Ken总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简单是太不能容忍了,于是有若干高人跳了出来,仔细分析Unix代码,找到后门,修改后再重新编译整个Unix,当所有人都以为这个世界应该从此清静了的时候,却发现Ken还是很容易就取得了他们的帐户权限,为此大家郁闷不已。至到很多年后,Ken才道出其中的原委,原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里,每次编译器编译时就会自动加入后门代码,而当时整个贝尔实验室都用的是Ken所写的C编译器。

由于Unix与C语言的深远影响,1983年美国计算机协会将当年的图灵奖破例颁给了作为软件工程师的Ken与Dennis,并在当年还决定新设立一个奖项――软件系统奖,以奖励那些优秀的软件开发者,当然首个软件系统奖也是非他们两人莫属了。

虽然Unix与C语言让Ken与Dennis功成名就,但是他们两人都没有走那些IT史上自己创业的通用套路,而是一直留在贝尔实验室从事其喜爱的软件开发工作。到了2000年12月时,Ken正式退休,离开了工作了几十年的贝尔实验室开始享受他晚年的时光,但是Ken怎么能闲得下来呢,于是他干脆将他的另一个爱好:飞机,变成正式的职业,成为了一名专职的飞行员。至此,他所开创的Unix时代已经完全与他无关了。